﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using UtilityExtensions;

namespace BOL
{
    [Serializable]
    public class EstructuraCostoitemNivelInfo
    {
        public int idInternal {get;set;}
        public string codDescripcion { get; set; }
        public string codigo {get;set;} 
        public string descripcion {get;set;}
        public string unidad { get; set; }
        public int idPadre { get; set; }
        public string cantidadStr {get;set;}
        public string precioStr {get;set;}
        public string totalStr { get; set; }

        public string cantidadUsoStr { get; set; }
        public string totalUsoStr { get; set; }
        public int idEstructuraCosto { get; set; }
        public int nivel { get; set; }
        public int idInsumo { get; set; }
        public bool bitSel { get; set; }

    }


    [Serializable]
    public class EstructuraCostoitemRecursoInfo
    {
        public int idInternal { get; set; }
        public int? idRecurso { get; set; }
        public int? idPresupuesto { get; set; }
        public string abreviacion { get; set; }
        public string codDesPartida { get; set; }
        public string codPartida { get; set; }
        public string codigo { get; set; }
        public string descripcion { get; set; }

        public string unidad { get; set; }
        public decimal cantidad { get; set; }

        public string precioMon { get; set; }
        public decimal total { get; set; }
        public decimal precio { get; set; }

        public string totalMon { get; set; }

        public decimal cantidadUso { get; set; }
        public int? idJuntoPadre { get; set; }
        public int? idAgrupadoDestino { get; set; }

        public bool bitSel { get; set; }


    }



    [Serializable]
    public class EstructuraCostoitemReUsoInfo
    {
        public int idInternal { get; set; }
        public int idEstructuraCosto { get; set; }
        public string Comparativo { get; set; }
        public string codigo { get; set; }
        public string descripcion { get; set; }
        public string unidad { get; set; }
        public decimal totalDisp { get; set; }
        public string totalDispStr { get; set; }
        public decimal totalReUso { get; set; }
        public string totalReUsoStr { get; set; }
        public int idInsumo { get; set; }

       

    }


    [Serializable]
    public class EstructuraCostoitemsingleInfo
    {
        public int idInternal { get; set; }
        public int idInsumo { get; set; }
        public string codigo { get; set; }
        public string descripcion { get; set; }
        public string unidad { get; set; }
        public decimal precio { get; set; }
        public decimal cantidad { get; set; }
        public decimal total { get; set; }

        public string totalStr {
            get
            {
                return string.Format("{0} {1:N4}", simbol, total);
            }
        }
        public string precioStr
        {
            get
            { return string.Format("{0} {1:N4}", simbol, precio); 
            }
        }

        public string cantidadStr
        {
            get
            {
                return string.Format("{0:N4}",cantidad);
            }
        }
        public string totalDispStr
        {
            get
            {
                return string.Format("{0} {1:N4}", simbol, total);
            }
        }

        
        public string simbol { get; set; }
        public int idOrdenCompra { get; set; }
        public string numOrdenCompra { get; set; }
        public int idOrdenCompraItem { get; set; }
        public int idMoneda { get; set; }
              


        public EstructuraCostoitemsingleInfo()
        {

        }
        public EstructuraCostoitemsingleInfo(int idInternal, 
                                            int idInsumo, 
                                            string codigo, 
                                            string descripcion, 
                                            string unidad,
                                            decimal precio,
                                            decimal cantidad,
                                            decimal total,
                                            string simbol,
                                            int idMoneda)

        {
            this.idInternal = idInternal;
            this.idInsumo=idInsumo;
            this.codigo=codigo;
            this.descripcion = descripcion;
            this.unidad = unidad;
            this.precio = precio;
            this.cantidad = cantidad;
            this.total = total;
            this.idMoneda = idMoneda;
            this.simbol = simbol;
        }


        public EstructuraCostoitemsingleInfo(int idInternal,
            int idInsumo,
            string codigo,
            string descripcion,
            string unidad,
            decimal precio,
            decimal cantidad,
            decimal total,
            int idOrdenCompra,
            int idOrdenCompraItem,
            string numOrdenCompra,
            string simbol,
            int idMoneda)
        {
            this.idInternal = idInternal;
            this.idInsumo = idInsumo;
            this.codigo = codigo;
            this.descripcion = descripcion;
            this.unidad = unidad;
            this.precio = precio;
            this.cantidad = cantidad;
            this.total = total;
            this.idOrdenCompra =  idOrdenCompra;
            this.numOrdenCompra = numOrdenCompra;
            this.idOrdenCompraItem = idOrdenCompraItem;
            this.simbol = simbol;
            this.idMoneda = idMoneda;
        }


        public void cambiarMoneda(int idMonedaCH,decimal tipoCambioOBRADOL,string simbolTPObraDDL,string simbolMonedaBase)
        {
            //cambio de moneda base
            if (this.idMoneda != idMonedaCH)
            {
                if (this.idMoneda == 3) //base
                {
                    // me pides cambiar a dolares
                    this.total = this.total / tipoCambioOBRADOL;
                    this.simbol = simbolTPObraDDL; 
                    this.idMoneda = idMonedaCH;
                }
                else
                {
                    //cambio a soles
                    this.total = this.total * tipoCambioOBRADOL;

                    this.simbol = simbolMonedaBase;
                    this.idMoneda = idMonedaCH;
                }

            }
            this.precio = Math.Round(total / this.cantidad,4);
        }

        public void cambiarSimbol(string simbol, int idMoneda)
        {
            this.simbol = simbol;
            this.idMoneda = idMoneda;
            
        }


    }

}
